var express = require('express')
//通过fs模块操作文件内容
var fs = require('fs')
//通过path模块操作文件路径
var path = require('path')

//! 创建子路由对象（用来管理一部分后端路由）
var userRouter = express.Router()

//!定义返回给客户端的数据
// var arr = [
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15929780085@qq.com', name: 'zh', phone: '15929780085', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '18092602390@qq.com', name: 'vrc', phone: '18092602390', pass: '1234', ingroup: '编辑组', isadmin: true, status: false
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: false
//     },
// ]

//! 设置接口
//! 分页查询
userRouter.get('/list', (req, res) => {
    //? 获取get类型请求的参数：req.query
    var { page, count } = req.query
    //? req  请求对象，包含了和本次请求相关的所有信息（请求地址，请求方式，携带的参数）

    //? 读取user.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json')
    //? 读取文件内容 
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    //!  分页
    //! arr.slice(0,10)   取前10个 0-9
    var newArr = arr.slice((page - 1) * count, page * count)


    // console.log('收到了来自客户端的请求');
    // console.log(page, count);
    // console.log(req.query.page,req.query.count);

    //? res  响应对象，可以借助res向客户端返回信息（字符串，json格式数据，网页）
    // res.send({ code: 200, msg: '请求成功', list: arr })//? 通过send向客户端发送数据

    res.send({ code: 200, msg: '请求成功', list: newArr })

})//? 假设获取请求列表

//! 设置模糊搜索
userRouter.get('/search', (req, res) => {
    //* 接收参数
    var { searchkey } = req.query

    //? 读取user.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json')
    //? 读取文件内容
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    //*根据参数从用户的name属性中进行过滤
    var arn = arr.filter((item) => {
        //* 写法一
        //* indexof找到了返回的是下标 没找到返回-1
        return item.name.indexOf(searchkey) != -1
        //* 写法二
        //* includes找到了返回true 没找到返回false
        // return item.name.includes(searchkey)== true
        //* 写法三 正则
        // return new RegExp(searchkey).test(item.name) 
    })
    //* 返回数据
    res.send({ code: 200, msg: '查询成功', list: arn })
})

//! 登录
userRouter.post('/login', (req, res) => {
    //* 想要接收post类型请求的参数 必须提前设置能解析post请求参数的中间件 express.json 和 express.urlencoded

    var { phone, pass } = req.body

    //? 读取user.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json')
    //? 读取文件内容
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []


    //! 用来自客户端的数据做判断，判断在不在服务端的用户列表中
    var i = arr.findIndex((item, index) => {
        return item.phone == phone && item.pass == pass
    })
    //! 如果i不是-1 说明来自客户端的数据是合法的
    if (i != -1) {


        //登录成功时可以一并返回登录成功的用户信息，登录令牌 
        res.send({ code: 200, msg: '登录成功', userinfo: arr[i], token: '' })

    } else {
        res.send({ code: 400, mag: '登录失败' })

    }
})

//! 注册
userRouter.post('/register', (req, res) => {
    //? 获取注册需要的参数
    var { phone } = req.body

    //? 读取user.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json')
    //? 读取文件内容
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    //? 判断新用户是否已存在
    var i = arr.findIndex((item) => {
        return item.phone == phone
    })
    if (i != -1) {//@ 说明用户已存在，注册失败
        res.send({ code: 400, msg: '该手机号已注册，注册失败' })

    } else {
        //? 添加新用户到user.json 
        arr.push({ ...req.body, ingroup: '编辑组', inadmin: true, status: true })
        fs.writeFileSync(filepath, JSON.stringify(arr), 'utf8')
        res.send({ code: 200, msg: '注册成功' })
    }
})

//! 删除
userRouter.post('/delete', (req, res) => {
    //? 获取手机号参数
    var { phone } = req.body


    //? 读取user.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json')
    //? 读取文件内容
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    var i = arr.findIndex((item) => {
        return item.phone == phone

    })
    if (i != -1) {
        arr.splice(i, 1)
        fs.writeFileSync(filepath, JSON.stringify(arr), 'utf8')
        //!  分页
        //! arr.slice(0,10)   取前10个 0-9
        var newArr = arr.slice(0, 4)
        res.send({ code: 200, msg: '删除成功', list: newArr })
    } else {
        res.send({ code: 200, msg: '删除失败' })

    }

})




//! 导出子路由对象
module.exports = userRouter